
//给你一个链表的头节点 head 和一个整数 val ，
//请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 


#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
struct ListNode {
      int val;
      struct ListNode *next;
  };
struct ListNode* removeElements(struct ListNode* head, int val) 
{

while(head!=NULL&&head->val==val)
{
    head=head->next;
}
if(head==NULL)
    return NULL;
struct ListNode* cur=head;
struct ListNode* next=cur->next;
while(next)
{
    if(next->val==val)
    {
        cur->next=next->next;
        next=cur->next;
    }
    else
    {
        cur=cur->next;
        next=cur->next;
    }
}
return head;
}